\chapter{接続相手の認証}
本PPPでは、接続相手を確認するための認証プロトコルとして、
PAPとCHAPをサポートしています。
この章では、これらの認証方法を利用するための設定について
説明します。

\section{PPPでの接続と認証手続き}
PPPによるIP接続では、相手との接続を確立するまでに以下のような
手順を踏みます。

\begin{enumerate}
\item LCPによりリンクレベルの情報を交換する。ここでは、使用するMRUや
  ACCMAPの値を交換するとともに、認証プロトコルやLQRプロトコルを
  使用するかどうかも相談します。相手が認証プロトコルをサポートしていない
  場合には、接続を断ることもできます。
\item LCPで認証プロトコルを使用することになれば、LCPがオープンした
  のちにPAPあるいはCHAPを使って、接続する相手を確認します。
  ユーザ名(システム名)とパスワードを受け取ることにより、接続相手を
  確認するとともに、使用するIPアドレスを限定することができます。
  相手が正しいユーザ名とパスワードを持っていない場合には、接続を
  切断します。
\item IPCPによりIPアドレスの調停をおこないます。認証の際に取得した
  相手システムの名前に応じて使用するIPアドレスを制御することができます。
\end{enumerate}

認証プロトコルを使用するかどうかは、enable/disableおよびaccept/deny
コマンドで制御することができます。

\begin{table}[htbp]
  \begin{center}
    \leavevmode
    \begin{tabular}[h]{|l|l|}
      \hline
      enable pap & 相手に対して、PAPを使って自分を証明することを要求します。\\
      enable chap & 相手に対して、CHAPを使って自分を証明することを要求します。\\
      disable pap & 相手に対して、PAPを使うことを要求しません。\\
      disable chap & 相手に対して、CHAPを使うことを要求しません。\\
      accept pap & PAPの要求に答えられることを示します。\\
      accept chap & CHAPの要求に答えられることを示します。\\
      deny pap & PAPの要求には答えられないことを示します。\\
      deny chap & CHPPの要求には答えられないことを示します。\\
      \hline
    \end{tabular}
  \end{center}
\end{table}

\section{自分の証明}
接続相手が認証手続きを必要とする場合には、システム名とパスワードを
相手に送って、自分が何者であるかを明らかにしなくてはなりません。
この情報は、set authnameおよびset authkeyコマンドによって指定します。

例えば接続相手がPAPを要求する場合には、次のように設定をおこないます。

\begin{screen}\baselineskip12pt
  \begin{verbatim}
 accept pap
 disable chap
 set authname MySystemName
 set authkey MyPassword
  \end{verbatim}
\end{screen}

CHAPを使用する場合には、accpet chap, deny papと設定しまが、この時も
authnameとauthkeyの情報が利用されます。
ただしCHAPでは証明を要求した側から、そのシステム名がCHALLENGEパケット
とともに送られてきますので、その名前をもとに次の節で説明する
\verb|ppp.secret|を探して対応する秘密鍵を求めます。相手のシステム名が
\verb|ppp.secret|に見つからない場合にのみ、authkeyの内容を秘密鍵として
用います。

\section{相手の確認}
認証プロトコルを使用するためには、まずenableコマンドによりその
要求を発するように設定をおこなっておきます。

\begin{screen}\baselineskip12pt
  \begin{verbatim}
 enable chap
 disable pap
  \end{verbatim}
\end{screen}

接続相手に自分を証明をすることを要求した場合には、相手側から
システム名とパスワードが送られてきますので、これを確認しなければ
なりません。この確認作業は\verb|/etc/ppp.secret|(あるいは
\verb|$HOME/.pppsecret|)を参照することによりおこなわれます。
このファイルの中にシステム名が登録されていなかったり、パスワードが
間違っている場合には、接続を拒否します。

パスワードが正しい場合には、さらに\verb|ppp.secret|の中にアドレス
範囲が指定されているかどうか調べられます。アドレス範囲が指定されて
いた場合には、その範囲が後のIPCPでのアドレス調停の際に相手側に
使用させるアドレスを制約するのに用いられます。

\begin{screen}\baselineskip12pt
  \begin{verbatim}
oscar   SdbE#3qw  192.244.186.17/29
bigbird TopSecret 192.244.186.33/32
  \end{verbatim}
\end{screen}

アドレスの制限が指定されていた場合には、すでにifaddrコマンドにより
制限が指定されていても、\verb|ppp.secret|での指定の方が優先されます。

% Local Variables: 
% mode: japanese-Latex
% TeX-master: "guide"
% End: 
